package com.gaga.common.enums;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

public enum PlayerType {
    /**
     * 主播播放通道
     * - 默认音量 100%
     * - 最高优先级
     */
    ANCHOR("anchor","主播", 1.0, 100),

    /**
     * 助理播放通道
     * - 默认音量 70%
     * - 普通优先级
     */
    ASSISTANT("assistant","小助理", 0.7, 50);

    private final String code;
    private final String displayName;
    private final double defaultVolume;
    private final int priority;

    PlayerType(String code, String displayName, double defaultVolume, int priority) {
        this.displayName = displayName;
        this.defaultVolume = defaultVolume;
        this.priority = priority;
        this.code = code;
    }

    // 获取播放器显示名称
    public String getDisplayName() {
        return displayName;
    }

    // 获取默认音量设置
    public double getDefaultVolume() {
        return defaultVolume;
    }

    // 获取播放优先级（数值越大优先级越高）
    public int getPriority() {
        return priority;
    }

    public String getCode() {
        return code;
    }

    // JSON序列化友好格式
    @JsonValue
    public String toValue() {
        return name().toLowerCase();
    }

    // JSON反序列化支持
    @JsonCreator
    public static PlayerType fromValue(String value) {
        return valueOf(value.toUpperCase());
    }

    public static PlayerType getPlayerTypeByCode(String code) {
        for (PlayerType type : PlayerType.values()) {
            if (type.getCode().equalsIgnoreCase(code)) {
                return type;
            }
        }
        return null;
    }
}